package com.starsky.project.domain.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.starsky.common.web.BaseEntity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.ToString;
import lombok.experimental.Accessors;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Size;
import java.math.BigDecimal;


/**
 * 图书信息对象 book_info
 *
 * @author wangsh
 * @date 2024-03-24
 */
@Data
@ToString
@EqualsAndHashCode
@NoArgsConstructor
@Accessors(chain = true)
@TableName("book_info")
public class BookInfo extends BaseEntity {
    private static final long serialVersionUID = 1L;

    @TableId(value = "id", type = IdType.AUTO)
    private Long id;
    /**
     * 图书名称
     */
    @Size(min = 0, max = 20, message = "图书名称不能大于20字符")
    @NotBlank(message = "图书名称不能为空")
    private String bookName;
    /**
     * 图书封面图
     */
    @Size(min = 0, max = 20, message = "图书封面图不能大于20字符")
    @NotBlank(message = "图书封面图不能为空")
    private String img;
    /**
     * 图书封面小图
     */
    @Size(min = 0, max = 20, message = "图书封面小图不能大于20字符")
    @NotBlank(message = "图书封面小图不能为空")
    private String smallImg;
    /**
     * 作者
     */
    @Size(min = 0, max = 20, message = "作者不能大于20字符")
    @NotBlank(message = "作者不能为空")
    private String author;
    /**
     * 13位isbn号
     */
    @Size(min = 0, max = 20, message = "13位isbn号不能大于20字符")
    @NotBlank(message = "13位isbn号不能为空")
    private String isbn;
    /**
     * 10位isbn号
     */
    @Size(min = 0, max = 20, message = "10位isbn号不能大于20字符")
    @NotBlank(message = "10位isbn号不能为空")
    private String isbn10;
    /**
     * 出版社
     */
    @Size(min = 0, max = 20, message = "出版社不能大于20字符")
    @NotBlank(message = "出版社不能为空")
    private String publisher;
    /**
     * 出版日期
     */
    @Size(min = 0, max = 20, message = "出版日期不能大于20字符")
    @NotBlank(message = "出版日期不能为空")
    private String pubDate;
    /**
     * 出版地
     */
    @Size(min = 0, max = 20, message = "出版地不能大于20字符")
    @NotBlank(message = "出版地不能为空")
    private String pubPlace;
    /**
     * 库存总数
     */
    @ApiModelProperty(value = "库存总数", name = "inventoryTotal", dataType = "Integer")
    private Integer inventoryTotal;
    /**
     * 定价
     */
    private BigDecimal price;
    /**
     * 页数
     */
    private Integer page;
    /**
     * 中图法分类
     */
    @Size(min = 0, max = 20, message = "中图法分类不能大于20字符")
    @NotBlank(message = "中图法分类不能为空")
    private String categoryName;
    /**
     * 语言
     */
    @Size(min = 0, max = 20, message = "语言不能大于20字符")
    @NotBlank(message = "语言不能为空")
    private String language;
    /**
     * 简介
     */
    @Size(min = 0, max = 20, message = "简介不能大于20字符")
    @NotBlank(message = "简介不能为空")
    private String summary;
    /**
     * 书籍纸张类型
     */
    @Size(min = 0, max = 20, message = "书籍纸张类型不能大于20字符")
    @NotBlank(message = "书籍纸张类型不能为空")
    private String paper;
    /**
     * 版次
     */
    @Size(min = 0, max = 20, message = "版次不能大于20字符")
    @NotBlank(message = "版次不能为空")
    private String edition;
    /**
     * 印次
     */
    @Size(min = 0, max = 20, message = "印次不能大于20字符")
    @NotBlank(message = "印次不能为空")
    private String impression;

    @Size(min = 0, max = 20, message = "纸张开数,开本不能大于20字符")
    @NotBlank(message = "纸张开数,开本不能为空")
    private String format;
    /**
     * 装帧信息(平装)
     */
    @Size(min = 0, max = 20, message = "装帧信息(平装)不能大于20字符")
    @NotBlank(message = "装帧信息(平装)不能为空")
    private String binding;
    /**
     * 图书关键词
     */
    @Size(min = 0, max = 20, message = "图书关键词不能大于20字符")
    @NotBlank(message = "图书关键词不能为空")
    private String keyword;
    /**
     * cip信息
     */
    @Size(min = 0, max = 20, message = "cip信息不能大于20字符")
    @NotBlank(message = "cip信息不能为空")
    private String cip;
    /**
     * 字数
     */
    @Size(min = 0, max = 20, message = "字数不能大于20字符")
    @NotBlank(message = "字数不能为空")
    private String wordCount;
    /**
     * 读者评分
     */
    @Size(min = 0, max = 20, message = "读者评分不能大于20字符")
    @NotBlank(message = "读者评分不能为空")
    private String evaluationScore;

    @Size(min = 0, max = 20, message = "图书热度不能大于20字符")
    @NotBlank(message = "图书热度不能为空")
    private String heatNum;
    /**
     * 目录
     */
    @Size(min = 0, max = 20, message = "目录不能大于20字符")
    @NotBlank(message = "目录不能为空")
    private String catalog;
    /**
     * 一般附注
     */
    @Size(min = 0, max = 20, message = " 一般附注不能大于20字符")
    @NotBlank(message = " 一般附注不能为空")
    private String annotation;
    /**
     * 主题
     */
    @Size(min = 0, max = 20, message = "主题不能大于20字符")
    @NotBlank(message = "主题不能为空")
    private String subject;
    /**
     * 丛编信息
     */
    @Size(min = 0, max = 20, message = "丛编信息不能大于20字符")
    @NotBlank(message = "丛编信息不能为空")
    private String batch;

    @Size(min = 0, max = 20, message = "状态不能大于20字符")
    @NotBlank(message = "状态不能为空")
    private String status;

    @Size(min = 0, max = 20, message = "删除标志不能大于20字符")
    @NotBlank(message = "删除标志不能为空")
    private String delFlag;


}
